package rdd01.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark_Tavertion_flatMap {
  def main(args: Array[String]): Unit = {
    val sparkConf=new SparkConf().setMaster("local[*]").setAppName("FlatMap")
    val sc=new SparkContext(sparkConf)
    //flatMap扁平化算子
    val rdd:RDD[List[Int]]=sc.makeRDD(List(
      List(1,2),List(3,4)
    ))

//    rdd.collect().foreach(println)
    val flatRDD:RDD[Int] = rdd.flatMap(
      list => {
        list
      }
    )
    flatRDD.collect().foreach(println)
    //扁平化字符集合
    val rdd1:RDD[String]=sc.makeRDD(List(
      "Hello Scala","Hello Spark"
    ))
    val flatMap1:RDD[String] = rdd1.flatMap(
      s => {
        s.split(" ")
      }
    )
    flatMap1.collect().foreach(println)
    //扁平化混合数据
    val rdd2=sc.makeRDD(List(List(1,2),3,List(4,5)))
    val flatMap2=rdd2.flatMap(
      data=>{
        data match{
          case list:List[_]=>list
          case dat=>List(dat)
        }
      }
    )
    flatMap2.collect().foreach(println)
    sc.stop()


  }

}
